/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.fatec.ppi.teste;

import java.util.Scanner;
import br.fatec.ppi.modelo.Aluno;
import java.util.List;
import javax.persistence.*;
import javax.persistence.Query;



public class Main {
    
 public static void main(String [] args){
   
   Scanner in = new Scanner(System.in);
     
   EntityManagerFactory fabricaMotores = Persistence.createEntityManagerFactory("modelo");

    EntityManager motor = fabricaMotores.createEntityManager();
    EntityTransaction transacao= motor.getTransaction();
    
    
    
    
    int op;
    do{
        
        
        System.out.println("1 - Inserir");
        System.out.println("2 - Para Listar Todos");
        System.out.println("3 - Para Listar por nome");
        System.out.println("4 - Para Listar por 'like' nome");
        System.out.println("5 - Para Listar por idade");
        System.out.println("6 - Para Listar por faixa de idade");
        System.out.println("0 - Sair");
        System.out.print("0pcao:");
        op=in.nextInt();
        
        switch(op){
            
            case 1:  transacao.begin();
                     Aluno aluno = new Aluno();
                
                    System.out.println("Insira o ID: ");
                    aluno.setId(in.nextInt());
                    System.out.println("Insira a Idade: ");  
                    aluno.setIdade(in.nextInt());
                    System.out.println("Insira o nome: ");  
                    aluno.setNome(in.next());
                    motor.persist(aluno);
                    transacao.commit(); 
                break;
                
            case 2:  Query pesquisa = motor.createQuery("select c.nome from Aluno c ");
     
                     List<String> listaAlunos = pesquisa.getResultList();
     
                     for(String alunoTmp : listaAlunos){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 3:  System.out.println(" Insira o nome que deseja encontrar: ");
                     String nome = in.next();
                
                     Query pesquisaPorNome = motor.createQuery("select c.nome from Aluno c where c.nome='"+nome+"' ");
     
                     List<String> listaAlunosNome = pesquisaPorNome.getResultList();
     
                     for(String alunoTmp : listaAlunosNome){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 4:  System.out.println(" Insira parte do nome: ");
                     nome= in.next();
                
                     Query pesquisaLike = motor.createQuery("select c.nome from Aluno c where c.nome like '%"+nome+"%' ");
     
                     List<String> listaAlunosLike = pesquisaLike.getResultList();
      
                     System.out.println("Resultado da Pesquisa: ");
                     for(String alunoTmp : listaAlunosLike){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 5:
                   System.out.println(" Inserir a Idade: ");
                     int idade= in.nextInt();
                
                     Query pesquisaIdade = motor.createQuery("select c.nome from Aluno c where c.idade='"+idade+"' ");
     
                     List<String> listaAlunosIdade = pesquisaIdade.getResultList();
      
                     System.out.println("Resultado da Pesquisa: ");
                     for(String alunoTmp : listaAlunosIdade){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 6:           
                System.out.println(" Insira a faixa de idade:");
                System.out.print("  De: "); 
                int ini =in.nextInt();
                System.out.print(" Até:  ");
                int ult =in.nextInt();
                      
                
                     Query pesquisaPorIdade = motor.createQuery("select c.nome from Aluno c where c.idade between'"+ini+"' and '"+ult+"'");
     
                     List<String> listaAlunosPorIdade = pesquisaPorIdade.getResultList();
      
                     System.out.println("Resultado da Pesquisa da faixa: ");
                     for(String alunoTmp : listaAlunosPorIdade){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 0:break;
                
             
        }
        

    }while(op != 0);
    
    
    
 }
}
